package com.gitee.blogcase.gracepaycase.service;


import com.gitee.blogcase.gracepaycase.dto.PayDTO;

/**
 * 支付服务
 *
 * @author wentao.wu
 * @date 2022/01/04
 */
public interface PayService {
    /**
     * 支付之前
     *
     * @param payDTO 支付dto
     */
    <T> void befor(PayDTO<T> payDTO);

    /**
     * 执行支付
     *
     * @param payDTO 支付dto
     * @return boolean
     */
    <T> boolean invoke(PayDTO<T> payDTO);

    /**
     * 支付失败后
     *
     * @param payDTO 支付dto
     */
    <T> void errorAfter(PayDTO<T> payDTO);

    /**
     * 支付成功后
     *
     * @param payDTO 支付dto
     */
    <T> void okAfter(PayDTO<T> payDTO);
}
